/**
 * Hoja de trabajo 1 - Radio
 * 
 * La clase implementa los métodos para la interfaz IRadio desarrollada
 * en clase. Los métodos se describen en la interfaz IRadio.
 * 
 * Autor: Esteban Ortiz
 * Fecha: 2010-07-09
 */
package actions;

/**
 * La clase implementa los métodos de la interfaz IRadio
 * @author setian
 * @see IRadio
 */
public class MiRadio implements IRadio {

	/**
	 * Guarda la emisora FM sintonizada
	 */
	private double sintonizarFM = 87.9;
	
	/**
	 * Guarda la emisora AM sintonizada
	 */
	private double sintonizarAM = 530;
	
	/**
	 * Indica la frecuencia actual sintonizada
	 */
	private String frecuencia = FM;
	
	/**
	 * Indica si el radio está encendido o apagado
	 */
	private boolean pwrStatus = false;
	
	/**
	 * Guarda los presets FM para los botones
	 */
	private float btnPresetFM[] = new float[12];
	
	/**
	 * Guarda los presets AM para lso botones
	 */
	private float btnPresetAM[] = new float[12];

	// -----------------------------------------------------------------
	// Métodos
	// -----------------------------------------------------------------

	/*
	 * (non-Javadoc)
	 * @see actions.IRadio#cambiarEmisora()
	 */
	public void cambiarEmisora(boolean adelante) {
		if (frecuencia.equals(FM))
			if (adelante)
				if (sintonizarFM < 107.9)
					sintonizarFM += 0.2;
				else
					sintonizarFM = 87.9;
			else if (sintonizarFM > 87.9)
				sintonizarFM -= 0.2;
			else
				sintonizarFM = 107.9;
		else if (frecuencia.equals(AM))							
			if (adelante)
				if (sintonizarAM < 1610)
					sintonizarAM += 10;
				else
					sintonizarAM = 530;
			else if (sintonizarAM > 530)
				sintonizarAM -= 10;
			else
				sintonizarAM = 1610;
	}

	/*
	 * (non-Javadoc)
	 * @see actions.IRadio#cambiarFrecuencia()
	 */
	public void cambiarFrecuencia() {
		frecuencia = (frecuencia.equals(FM)) ? AM : FM;
	}

	/*
	 * (non-Javadoc)
	 * @see actions.IRadio#darEmisora()
	 */
	public float darEmisora() {
		return (float) ((frecuencia.equals(FM)) ? sintonizarFM : sintonizarAM);
	}

	/*
	 * (non-Javadoc)
	 * @see actions.IRadio#darFrecuencia()
	 */
	public String darFrecuencia() {
		return frecuencia;
	}

	/*
	 * (non-Javadoc)
	 * @see actions.IRadio#energia()
	 */
	public void energia() {
		pwrStatus = (pwrStatus) ? false : true;
	}

	/*
	 * (non-Javadoc)
	 * @see actions.IRadio#estaEncendido()
	 */
	public boolean estaEncendido() {
		return pwrStatus;
	}

	/*
	 * (non-Javadoc)
	 * @see actions.IRadio#guardarEmisora(int, float)
	 */
	public void guardarEmisora(int boton, float emisora) {
		if (frecuencia.equals(FM))
			btnPresetFM[boton] = emisora;
		else
			btnPresetAM[boton] = emisora;
	}

	/*
	 * (non-Javadoc)
	 * @see actions.IRadio#seleccionarEmisora(int)
	 */
	public void seleccionarEmisora(int boton) {
		if (frecuencia.equals(FM))
			sintonizarFM = (double) ((btnPresetFM[boton] != 0) ? btnPresetFM[boton] : 87.9);
		else
			sintonizarAM = (double) ((btnPresetAM[boton] != 0) ? btnPresetAM[boton] : 530);
	}
}
